/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package genericos;

import java.io.*;
import java.net.URI;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * Clase que envia un correo electronico desde el correo de assessment de SDR
 *
 * @author Fernando Ramírez Martínez <Servicios Disaster Recovery>
 * @version 1.0
 */
public class Correos {

    private static final String smtpHost = "mail2.sdr.com.mx";
    private static final String smtpHostUser = "assessment";
    private static final String smtpHostPassword = "Unico11";

    /**
     * Correo corto de notificacion en base a 2 parametros El tacto debe ser en
     * codigo html.
     *
     * @param mensaje Codigo String en html
     * @param correo Correo destinatario
     * @param asunto nombre del asunto a tratar
     */
    public static void mensajecorto(String mensaje, String correo, String asunto) {
        String para = correo;
        String de = "assessment@sdr.com.mx";
        try {
            Properties props = System.getProperties();
            props.put("mail.smtp.startssl.enable", "true");
            props.put("mail.smtp.host", smtpHost);
            props.put("mail.smtp.port", "25");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.startssl.required", "true");
            Session session = Session.getDefaultInstance(props, null);
            MimeMessage message = new MimeMessage(session);
            message.setSubject(asunto);
            message.setFrom(new InternetAddress(de));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(para));
            Multipart multipart = new MimeMultipart();

            multipart.addBodyPart(addHtmlPart(mensaje));

            message.setContent(multipart);
            Transport tr = session.getTransport("smtp");
            tr.connect(smtpHost, 25, smtpHostUser, smtpHostPassword);
            message.saveChanges();
            tr.sendMessage(message, message.getAllRecipients());
            tr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Correo con datos adjuntos. El mensaje debe ses escrito en HTML dentro de
     * un String
     *
     * @param mensaje html texto string
     * @param correo destinatario del correo
     * @param adjunto archivo file para adjuntar
     * @param nombrearchivo nombre del archivo a adjuntar
     * @param imagen archivo de la imagen
     * @param nombreimagen string del nombre de la imagen
     * @param asunto asunto del mensaje
     */
    public static void mensajeadjunto(String mensaje, String correo, String adj, String ima, String nombrearchivo, String nombreimagen, String asunto) {
        String para = correo;
        String de = "assessment@sdr.com.mx";
        File adjunto = new File(adj);
        File imagen = new File(ima);
        try {
            Properties props = System.getProperties();
            props.put("mail.smtp.startssl.enable", "true");
            props.put("mail.smtp.host", smtpHost);
            props.put("mail.smtp.port", "25");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.startssl.required", "true");
            Session session = Session.getDefaultInstance(props, null);
            MimeMessage message = new MimeMessage(session);
            message.setSubject(asunto);
            message.setFrom(new InternetAddress(de));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(para));
            Multipart multipart = new MimeMultipart();
            BodyPart attach = new MimeBodyPart();
            DataSource source1 = new FileDataSource(imagen);
            BodyPart attach1 = new MimeBodyPart();
            attach1.setDataHandler(new DataHandler(source1));
            attach1.setFileName(nombreimagen);
            attach1.setHeader("Content-ID", "<" + nombreimagen + ">");
            DataSource source = new FileDataSource(adjunto);
            attach.setDataHandler(new DataHandler(source));
            attach.setFileName(nombrearchivo);
            attach.setHeader("Content-ID", "<" + nombrearchivo + ">");
            multipart.addBodyPart(addHtmlPart(mensaje));
            multipart.addBodyPart(attach);
            multipart.addBodyPart(attach1);
            message.setContent(multipart);
            Transport tr = session.getTransport("smtp");
            tr.connect(smtpHost, 25, smtpHostUser, smtpHostPassword);
            message.saveChanges();
            tr.sendMessage(message, message.getAllRecipients());
            tr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Metodo que reune las partes de un texto en html para el mensaje de correo
     *
     * @param html se le envia la cadena escrita en html para procesarla
     * @return Regresa un objeto body part para la compresion del mensaje.
     * @throws MessagingException
     */
    private static BodyPart addHtmlPart(String html) throws MessagingException {
        BodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent(html, "text/html");
        htmlPart.setDisposition(BodyPart.INLINE);
        return htmlPart;
    }

     /**
     * Mensaje en html simple sin uso de una imagen de fondo
     *
     * @param contenido String del mensaje a enviar
     * @return cadena en formato html para ser enviada
     */
    public static String crearmensaje(String motivo, String detalle) {
        
      String mensaje = "<body>\n"
                + "<div style=\"text-align: center;\">\n"
                + "<img style=\"width: 514px; height: 140px;\" alt=\"\"\n"
                + " src=\"http://192.100.169.102:8081/zianya.jpg\"><br>\n"
                + "<div style=\"text-align: center;\">\n"
                + "<br style=\"font-family: Arial;</small>\n"
                + "<div style=\"text-align: center;\"><small><big\n"
                + " style=\"font-weight: bold;\"><span\n"
                + " style=\"font-family: Arial;\">Esta notificaci&oacute;n se le env&iacute;a por la siguiente situaci&oacute;n:</span></big></small><br>\n"
                + "</div>\n"
                + "</div>\n"
                + "<div style=\"text-align: left;\">\n"
                + "<div style=\"text-align: left;\">\n"
                + "<fieldset\n"
                + " style=\"border: 6px groove rgb(131, 224, 252); font-family: Arial;\">"
                + "<legend style=\"font-weight: bold; text-align: center;font-family: Arial;\">Motivo</legend>" + motivo + "\n"
                + "</fieldset>\n"
                + "<fieldset\n"
                + " style=\"border: 6px groove rgb(131, 224, 252); font-family: Arial;\">"
                + "<legend style=\"font-weight: bold; text-align: center; font-family: Arial;\">Detalles</legend>" + detalle + " <size=\"30\" /><br />\n"
                + "</fieldset>\n"
                + "</div>\n"
                + "</div>\n"
                + "</div>\n"
                + "</div>\n"
                + "</body>";

        return mensaje;
    }

  
}
